package com.exist.simple.demo.service.impl;

import com.exist.simple.demo.Utils.ClassReflectUtils;
import com.exist.simple.demo.dto.ClassInfoDTO;
import com.exist.simple.demo.service.ClassInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;


@Service("classInfoService")
public class ClassInfoServiceImpl implements ClassInfoService {

    private static Logger logger = LoggerFactory.getLogger(ClassInfoServiceImpl.class);

    @Override
    public ClassInfoDTO classInfo() {

        ClassInfoDTO classInfoDTO = new ClassInfoDTO();
        String packageName = "com.exist.simple.demo.instruction";

        try {
            //获取指令包下的类
            List<Class> clazzs = ClassReflectUtils.getClasssFromPackage(packageName);

            //获取类里面的方法
            List<Map<String, List<String>>> classNameAndMethodList = ClassReflectUtils.getClassNameAndMethodList(clazzs);

            classInfoDTO.setClassNameAndMethodList(classNameAndMethodList);
            classInfoDTO.setPackageName(packageName);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
        return classInfoDTO;
    }

}
